原始题目:剑指 Offer 64. 求1+2+…+n (opens new window)
解题思路:
通过递归来实现循环的效果,通过递归函数的返回值来决定要不要继续递归。
代码:
class Solution {
int ans = 0;
public int sumNums(int n) {
sum(n);
return ans;
}
private boolean sum(int n) {
ans += n;
return n > 0 && sum(n - 1);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
复杂度分析
- 时间复杂度: 为输入参数,需要进行 次递归,每次递归的运算使用 的时间。
- 空间复杂度:需要进行 次递归,占用 的栈空间。